package com.cl.cloud.binlog.util;


import com.cl.cloud.binlog.tableMeta.ColumnMetaData;
import com.cl.core.util.StringUtil;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;

/**
 * @description: 将binlog数据解析为string的工具类
 * @author: liuzijian
 * @time: 2021-12-21 15:15
 */
public class CommonConverterProcessorUtil {

    /**
     * 将binlog数据解析为string
     *
     * @param serializables
     * @param columnMetaDataList
     * @return
     */
    public static List<String> convertToString(Serializable[] serializables, List<ColumnMetaData> columnMetaDataList) {
        List<String> res = new ArrayList<>(serializables.length);
        for (int i = 0; i < serializables.length; i++) {
            res.add(StringConverter.convert(serializables[i], columnMetaDataList.get(i).getType()));
        }
        return res;
    }

    public static LinkedHashMap<String, String> convertToMap(Serializable[] serializables, List<ColumnMetaData> columnMetaDataList) {
        LinkedHashMap<String, String> res = new LinkedHashMap<>();
        for (int i = 0; i < serializables.length; i++) {
            String fieldName = StringUtil.underlineToCamel(columnMetaDataList.get(i).getName());
            String value = StringConverter.convert(serializables[i], columnMetaDataList.get(i).getType());
            res.put(fieldName, StringUtil.isNotBlank(value) ? value : null);
        }
        return res;
    }

}
